library(ggplot2)
library(grid)
library(gridExtra)
library(psych)
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(knitr)
library(memisc)
## Loading required package: lattice
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
## 
## Attaching package: 'memisc'
## The following objects are masked from 'package:dplyr':
## 
##     collect, query, recode, rename
## The following objects are masked from 'package:stats':
## 
##     contr.sum, contr.treatment, contrasts
## The following object is masked from 'package:base':
## 
##     as.array
knitr::opts_chunk$set(message=FALSE, warning = FALSE, echo=FALSE)


# 全局配置
set.seed(1984) 

opts_chunk$set(fig.width=6, fig.height=6, fig.align='center', 
               warning=FALSE, message=FALSE, echo=FALSE,
               cache=TRUE, echo=FALSE)

数据集说明

这个整⻬的数据集包含1,599 种红酒,以及 11 个关于酒的化学成分的变量。 ⾄少 3 名葡萄酒专家对每种酒的质量进⾏了评分,分数在 0(⾮常差)和 10(⾮常好)之间。

## 'data.frame':    1599 obs. of  13 variables:
##  $ X                   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ fixed.acidity       : num  7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
##  $ volatile.acidity    : num  0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
##  $ citric.acid         : num  0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
##  $ residual.sugar      : num  1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
##  $ chlorides           : num  0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
##  $ free.sulfur.dioxide : num  11 25 15 17 11 13 15 15 9 17 ...
##  $ total.sulfur.dioxide: num  34 67 54 60 34 40 59 21 18 102 ...
##  $ density             : num  0.998 0.997 0.997 0.998 0.998 ...
##  $ pH                  : num  3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
##  $ sulphates           : num  0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
##  $ alcohol             : num  9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
##  $ quality             : int  5 5 5 6 5 5 5 7 7 5 ...

总体情况:

##        id         fixed.acidity   volatile.acidity  citric.acid   
##  Min.   :   1.0   Min.   : 4.60   Min.   :0.1200   Min.   :0.000  
##  1st Qu.: 400.5   1st Qu.: 7.10   1st Qu.:0.3900   1st Qu.:0.090  
##  Median : 800.0   Median : 7.90   Median :0.5200   Median :0.260  
##  Mean   : 800.0   Mean   : 8.32   Mean   :0.5278   Mean   :0.271  
##  3rd Qu.:1199.5   3rd Qu.: 9.20   3rd Qu.:0.6400   3rd Qu.:0.420  
##  Max.   :1599.0   Max.   :15.90   Max.   :1.5800   Max.   :1.000  
##  residual.sugar     chlorides       free.sulfur.dioxide
##  Min.   : 0.900   Min.   :0.01200   Min.   : 1.00      
##  1st Qu.: 1.900   1st Qu.:0.07000   1st Qu.: 7.00      
##  Median : 2.200   Median :0.07900   Median :14.00      
##  Mean   : 2.539   Mean   :0.08747   Mean   :15.87      
##  3rd Qu.: 2.600   3rd Qu.:0.09000   3rd Qu.:21.00      
##  Max.   :15.500   Max.   :0.61100   Max.   :72.00      
##  total.sulfur.dioxide    density             pH          sulphates     
##  Min.   :  6.00       Min.   :0.9901   Min.   :2.740   Min.   :0.3300  
##  1st Qu.: 22.00       1st Qu.:0.9956   1st Qu.:3.210   1st Qu.:0.5500  
##  Median : 38.00       Median :0.9968   Median :3.310   Median :0.6200  
##  Mean   : 46.47       Mean   :0.9967   Mean   :3.311   Mean   :0.6581  
##  3rd Qu.: 62.00       3rd Qu.:0.9978   3rd Qu.:3.400   3rd Qu.:0.7300  
##  Max.   :289.00       Max.   :1.0037   Max.   :4.010   Max.   :2.0000  
##     alcohol         quality     
##  Min.   : 8.40   Min.   :3.000  
##  1st Qu.: 9.50   1st Qu.:5.000  
##  Median :10.20   Median :6.000  
##  Mean   :10.42   Mean   :5.636  
##  3rd Qu.:11.10   3rd Qu.:6.000  
##  Max.   :14.90   Max.   :8.000

该数据集有1599个条目, 每个条目包含13个变量, 给每个条目加了一个id字段. 所有字段都是数字类型的

我们先总览一下各个属性之间的pearson相关度

其中相关度较高的有: volatile.acidity - critic.acid -0.55 fixed.acidity - critic.acid 0.67 fixed.acidity - density 0.67 fixed.acidity - pH -0.68

单变量研究

首先观察一下quality值的分布

查看其它变量的分布

多数直方图都是右偏态分布

volatile acidity分布

volatile acidity多数集中在0.2到0.7之间, 使用cut来查看一下可以发现集中在其中4个区间里

citric acid分布

再来查看一下citric acid值, 似乎有较为明显的outlier, 我们使用箱型图来查看一下

可以发现1.0是个outlier, 其他值分布在0.1 到0.8 之间

free sulfur dioxide 是个明显的右偏分布, 我们使用对数坐标和根号坐标观察

可以看出在对数坐标下呈现正态分布, 并且有6, 11, 15, 18 这几个常见的值

percent.free.sulfur.dioxide分布

我们现在查看一下free sulfur dioxide在total sulfur dioxide的占比情况, 定义一个新的变量

可以看出free sulfur dioxide的百分比呈现正态分布, 均值在0.4

再观察一下alcohol值

可以发现多数值分布在9.0以上部分均匀递减

residual.sugar分布

再观察一下residual.sugar值的分布

可以看出多数的residual.sugar集中在2.5左右, 较高的值呈现长尾分布

density分布

再来观察一下density值

可以看出基本呈现正态分布, 从0.99到1.004之间, 均值和中位数大约是0.997左右

变量与品质的相关研究

现在再将quality值和其他变量结合起来综合研究. 我们将quality的值分为三组: 差: quality <= 4 中: quality in (5, 6) 优: quality >= 7

我们将这个新等级变量加入数据集的字段

不同的属性下quanlity的差别提现的较为明显的有 alcohol, critic acid, volatile acidity alcohol和critic acid和 class正相关, 而volatile acidity和 class负相关

根据之前两两变量之间perason相关系数的观察, 我们针对四个明显的变量用箱型图观察: volatile.acidity, citric.acid, sulphates, alcohol

我们用2d密度图来观察一下几对变量之间的关系, 为了直观我们去掉了class=regular的数据, 只保留了good和bad的数据 我们来观察

可以观察到有一些变量存在outlier, 总体上good和bad的class在这几对变量对比上差别较为明显

变量分析

因为“quality”的取值较为主观, 我们引入了“class”作为评估葡萄酒好坏的标准, 只有good(>7), regular(5, 6), bad(<5)三种取值, 便于观察

接下来我们比较了几对变量之间的关联性, 在不同的class下的分布情况, 我们发现regular的葡萄酒分布的比较分散, 多数情况下regular和good/bad之间的界限难以区分, 所以我们只拿good和bad两类来观察, 让结果更为明显

我们发现, 多数good级别的葡萄酒有中等的citric acid和低的volatile acidity. bad级别的葡萄酒通常有较高的volatile acidity和较低的citric acid. 同样的,good级别的葡萄酒有更高的sulphates, 更高的alcohol

有趣的发现?

根据之前的变量之间的关系研究, 发现citric.acid 和quality之间有正相关性. 但是如果我们观察散点图, citric.acid在good和bad级别下并没有明显的界限.


最终图形和说明

图1

图1分析

这张图展示了数据集的每个特征的密度图, 把等级分为了三类: bad, regular, good. 使我们在不同的等级之间较为清晰的观察 观察到几个最佳的属性:volatile acidity/citric acid/sulphates/alcohol 其他属性, 比如fixed acidity, free sulfur dioxide 也有明显的分辨等级的特征

图2

图2 分析

我们分析了pearson相关度比较显著的4个变量: volatile acidity, citric acid, sulphates, alcohol 使用箱型图观察, 去掉了一些outlier, 根据三种品质: bad, regular, good 使用了不同的颜色, 标注了变量的均值. 观察结果比较明显的呈现出volatile acidity和品质负相关, 其他三个变量都是正相关

图3

图3说明

在这张图里我们用散点图的方法用6对变量两两比较, 并且去掉了regular级别的数据, 让观察结果更加明显. 并且去掉了一些outlier. 这样更好的区分了bad和good级别的红酒在不同属性之间的差别.


总结与展望

我们分析了红酒数据集, 有1599个记录, 12个属性. 我们分析了各种属性对红酒品质的影响 确定了4个变量: volatile acidity, citric acid, sulphates, alcohol 讲品质分为三类: bad, regular, good 我们发现volatile acidity和品质具有正相关, 其他三个变量和品质负相关

我们又用了多变量分析观察到不同的变量关系对红酒品质的影响 为了方便观察我们只考虑了bad和good, 因为多数情况下regular品质的红酒对我们的趋势研究没什么贡献 通过研究, good品质的红酒具有较低的volatile acidity, 较高的alcohol, bad品质的红酒

在未来的研究中, 我们可以用机器学习方法研究这个问题, 由于这个案例的数据集较小, 可以通过朴素贝叶斯方法对数据集分类. 随着数据集增大, 通过决策树/随即森林的方法能更好的对数据分类. 如果有更好的计算条件, 还可以使用支持向量机.